/**
 * 单例模式
 * 采用闭包的形式，因为闭包中的外层变量可以一直常驻在内存中
 */

function Person(name) {
    this.name = name;
}
Person.prototype.geyName = function () {
    return this.name;
}

/**
 * 使用代理进行创建，也可以说是工厂方法
 * 下面使用立即执行函数，创建一个instance，这时instance会常驻内存，后面就可以直接访问到了
 */

let ProxyMode = (function Proxy() {
    let instance = null;
    return function (val) {
        if (instance === null) {
            instance = new Person(val);
        }
        return instance;

    }
})();

let p1 = ProxyMode("HHH");
let p2 = ProxyMode('jjj');
console.log(p1 === p2); //true
